// 引入element插件，也可以不用，看具体项目需求
import { Message } from "element-ui";
// 引入路由，登录失效时跳转回登录页
import router from "../Router/index";

import store from "../store";

// 文件处理方法
// import { file } from "@/assets/js/file.js";


import axios from "axios";
// axios.defaults.headers["Content-Type"] = "application/json;charset=UTF-8";
// axios.defaults.headers.common["Access-Control-Allow-Origin"] = "*";
// 超时时间
const fetch = axios.create({
  timeout: 15 * 1000
});

fetch.interceptors.request.use(

  config => {
    if (store.getters["user/getToken"]) {
      // 如果后台要token这么写：
      config.headers.Authorization = `Bearer ${store.getters["user/getToken"]}`
      // 如果后台要Authorization 这么写：config.headers.Authorization = `Bearer ` + localStorage.getItem('token')
    }
    return config;
  },
  error => {
    return Promise.reject(error);
  }
);

fetch.interceptors.response.use(
  res => {
    // 判断返回数据类型，如果是文件，则执行下载；否则判断接口是否请求成功，具体状态与后端协商，这里以res.data.success举例
    if (
      res.headers["content-type"] === "application/vnd.ms-excel;charset=UTF-8"
    ) {
      // 下载文件
      //   file(res);
    } else if (res.data.status === 200) {
      return res.data;
    } else {
      return Promise.reject(res.data);
    }
  },
  error => {
    console.log("error",error)
    const stateCode = error.response.status;
    // 这里只添加了401状态码，如有需求可自行添加更多状态码
    if (stateCode === 401) {
      // 这里记得清除token 
      Message.closeAll();
      Message.error("登录已失效，请重新登录！");
      router.push("/login");
    } else {
      // 清除多余失败提示框
      Message.closeAll();
    }
    return Promise.reject(error);
  }
);

export default fetch;
